██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
SNOBOL
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbaSNOBOL (mwbqString oriented and symbolic language) è il nome generico di un mwbglinguaggio di programmazione per mwbwcalcolatore sviluppato tra il 1962 e il 1967 da David J. Farber, Ralph E. Griswold e Ivan P. Polonsky presso i mwcwLaboratori AT&T Bell. L'ultima versione del linguaggio ha preso il nome di SNOBOL4. SNOBOL è stato uno di una serie di linguaggi orientati alle stringhe sviluppato tra gli mwdaanni cinquanta e i mwdqsessanta (tra gli altri, COMIT e TRAC).
SNOBOL4 si differenzia dalla maggior parte dei linguaggi di programmazione poiché fornisce il pattern come tipo di dato di prima classe (ovvero, un tipo di dato i cui valori possono essere manipolati in qualsiasi modo permesso a qualsiasi altro tipo di dato nel linguaggio) e operatori per concatenazione e alternanza di pattern. Le stringhe generate durante l'esecuzione possono essere trattate come programmi e quindi eseguite.
SNOBOL4 è stato spesso insegnato in grandi università statunitensi verso la fine degli anni 1960 e all'inizio degli anni 1970 ed è stato ampiamente utilizzato nei due decenni seguenti come linguaggio di manipolazione del testo in ambito mwegumanistico.
In anni recenti SNOBOL ha ceduto il passo a nuovi linguaggi quali mwfaAwk e mwfqPerl, che hanno reso di moda la manipolazione di stringhe mediante mwfgespressioni regolari. Tuttavia, i pattern di SNOBOL4 sussumono le grammatiche mwfwBNF, che sono equivalenti alle mwgagrammatiche libere dal contesto e più potenti delle espressioni regolari.cite-ref-1[1] Le espressioni regolari implementate da Awk e Perl, infatti, sono estensioni delle espressioni regolari intese in senso tradizionale, ma esse — al contrario dei pattern di SNOBOL4 — non possono essere ricorsive.cite-ref-2[2]
Uno dei progettisti di SNOBOL, Ralph Griswold, ne ideò due successori, chiamati SL5 e mwigIcon, che combinavano il meccanismo di mwiwmwjapattern matching di SNOBOL4 con una strutturazione più standard stile mwjqALGOL.
Contents
• Esempi
• Note
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
Esempi
Il programma "Hello World":
output = "Hello world"
end
Un programma per identificare le vocali all'interno di una stringa proposta dall'utente:
Vocali = "aeiou"
Testo = input
loop Testo ? any(Vocali) . output rem . Testo :s(loop)
end
Se l'utilizzatore scrive ad esempio mwuwaiuole il programma restituisce in sequenza i caratteri mwvaaiuoe. Se l'utilizzatore scrive mwvqabbassata il programma restituisce mwvgaaaa.
mwxqse il contenuto della variable X è identico alla stringa "Carlo", allora scrivi "Esatto", altrimenti scrivi "Sbagliato"
si può esprimere così:
X = "Carlo"
( (leq(X,"Carlo")) (Terminal = "Esatto"), (Terminal = "Sbagliato") )
end
Lo spazio tra le due prime parentesi è un AND implicito: si valuta la verità di ambedue le dichiarazioni unite nella prima parentesi; la virgola esprime OR, quindi se non risulta mwfgvero AND vero si esegue l’istruzione alternativa. In questo caso, siccome X è effettivamente istanziata a "Carlo", il programma scriverà "Bene". NOT si esprime con mwfw~.
Snobol permette e incoraggia l'uso delle funzioni, molte delle quali disponibili nella libreria standard. Il programmatore può scrivere le sue funzioni personali. Per esempio, questo programma scrive mwgqCiao seguito da un nome indicato dall'utente, e restituito da una funzione qui chiamata mwggnome:
*-- Funzione NOME
define("nome()") :(nome_end)
nome Terminal = "Introdurre un nome"
Scelta = input
nome = Scelta :(return)
nome_end
* MAIN
Persona = nome()
Output = "Ciao " Persona
end
Se l'utente inserisce mwsqGiulia sull'output si otterrà mwsgCiao Giulia. Se non si risponde alla domanda sull'output si otterrà mwswCiao.
Implementazioni disponibili
Disponibile sia per sistemi mwtgUnix-like sia per Windows sia per OSX è l'implementazione Macro SNOBOL4 in C scritta da Phil Budne: è gratuita e open source cite-ref-3[3]. Anche Dave Shields sviluppa una sua versione del linguaggio cite-ref-4[4], che continua lo mwvwSpitbol (Speedy Implementation of Snobol) realizzato da Catspaw, Inc.cite-ref-5[5]; Catspaw distribuisce ora gratuitamente molto materiale su Snobol e Spitbol.
Note
cite-note-11. ↑ mwyg(mwywmwzaENmwzq) Gimpel, J. F. 1973. A theory of discrete patterns and their implementation in SNOBOL4. Commun. ACM 16, 2 (Feb. 1973), 91-100.
cite-note-22. ↑ mw0q(mw0gmw0wEN) mw1amw1qPrograms that transform their own source code or the Snobol foot joke, su mw1gdobbscodetalk.com.
cite-note-33. ↑ mw2ghttp://www.regressive.org/snobol4/
cite-note-44. ↑ mw3ghttps://github.com/daveshields
cite-note-55. ↑ mw4ghttp://www.snobol4.com/
Bibliografia
• Dewar, Robert BK, Mark B. Emmer, and Robert E. Goldberg. mw5gMacro Spitbol. The High-Performance SNOBOL4 Language. Salida, Colorado, Catspaw Inc., 2000².
• Emmer, Mark B. mw6aSNOBOL4+: The SNOBOL4 Language for the Personal Computer User. Englewood Cliffs, NJ: Prentice Hall, 1985 (ISBN 0-13-815119-9).
• Gimpel, James F. mw6wAlgorithms in SNOBOL4. New York: Wiley, 1976 (ISBN 0-471-30213-9); republished Salida, CO: Catspaw, 1986 (ISBN 0-939793-00-8).
• Griswold, Ralph E. mw7wThe Macro Implementation of SNOBOL4. San Francisco, CA: W. H. Freeman and Company, 1972 (ISBN 0-7167-0447-1).
• Griswold, Ralph E., J. F. Poage, and I. P. Polonsky. mw8gThe SNOBOL4 Programming Language. Englewood Cliffs, NJ: Prentice Hall, 1968 (ISBN 0-13-815373-6).
• Griswold, Ralph E. mw9qString and List Processing in SNOBOL4: Techniques and Applications. Englewood Cliffs, NJ: Prentice Hall, 1975 (ISBN 0-13-853010-6).
• Hockey, Susan M. mw-aSnobol Programming for the Humanities. New York: Clarendon Press; Oxford: Oxford University Press, 1985 (ISBN 0-19-824676-5).
• Milanese, Guido mw-wFilologia, letteratura, computer. Idee e strumenti per l'informatica umanistica. Milano: Vita e Pensiero, 2020, pp. 241-243 (ISBN 9788834337516)
Collegamenti esterni
• mwaqaPagina di Phil Budne: ricchissima di materiali e link, è il punto di partenza migliore
• mwaqiCatspaw, Inc. compilatori e interpreti sviluppati da Caspaw nel corso dei decenni 1980-2000
• mwaqqIntroduction to Snobol by James Ford, su drofmij.awardspace.com (archiviato dall'url originale il 2 giugno 2011).
• mwaqyWord size: programma di esempio per l'uso dello Snobol nell'analisi dei testi
• mwaqgOral history interview with Ralph E. Griswold Charles Babbage Institute, University of Minnesota, Minneapolis.
• mwaqsCharles Hall Collection on the SNOBOL Programming Language. Charles Babbage Institute, University of Minnesota, Minneapolis.
• mwaq4Tkslide: un ambiente grafico (IDE) per la programmazione in Snobol
• mwaraTry It Online (Snobol4/CSnobol): compilatore online, utile per provare le funzionalità del linguaggio